import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
races_data = pd.read_csv('races.csv')
diverstanding_data = pd.read_csv('driver_standings.csv')
drivers_data = pd.read_csv('drivers.csv')
constructorstanding_data = pd.read_csv('constructor_standings.csv')
constructors_data = pd.read_csv('constructors.csv')
constructor_race_data = pd.read_csv('constructor_results.csv')
data_2011 = races_data.where(races_data['year']==2011).dropna()
data_2011 = data_2011.merge(diverstanding_data,on='raceId').dropna()
data_2011 = data_2011.merge(drivers_data,on='driverId').dropna()
data_2011.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2011 = data_2011.sort_values(['round','position'])
data_2011
data_teams_2011 = races_data.where(races_data['year']==2011).dropna()
data_teams_2011 = data_teams_2011.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2011 = data_teams_2011.merge(constructors_data,on='constructorId').dropna()
data_teams_2011.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2011 = data_teams_2011.sort_values(['round','position'])
data_teams_2011.head(30)
#teams_color_2011 = {'Red Bull Racing':dict(color='darkblue'),
# 'McLaren':dict(color='orange'),
# 'Ferrari':dict(color='red'),
# 'Mercedes':dict(color='teal'),
# 'Renault':dict(color='yellow'),
# 'Williams':dict(color='')
# }
#drivers = pd.DataFrame()
constructors = data_teams_2011['name_y'].unique()
drivers = data_2011['code'].unique()
#drivers['color'] = []
fig1 = go.Figure()
fig2 = go.Figure()
for i in drivers:
d = data_2011.where(data_2011['code'] == i).dropna()
fig1.add_trace(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig2.add_trace(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig1.show()
fig2['layout']['yaxis']['autorange'] = "reversed"
fig2.show()
fig3 = go.Figure()
fig4 = go.Figure()
for i in constructors:
d = data_teams_2011.where(data_teams_2011['name_y'] == i).dropna()
fig3.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig4.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig3.show()
fig4['layout']['yaxis']['autorange'] = "reversed"
fig4.show()
data_2012 = races_data.where(races_data['year']==2012).dropna()
data_2012 = data_2012.merge(diverstanding_data,on='raceId').dropna()
data_2012 = data_2012.merge(drivers_data,on='driverId').dropna()
data_2012.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2012 = data_2012.sort_values(['round','position'])
data_2012.head(30)
drivers = data_2012['code'].unique()
fig5 = go.Figure()
fig6 = go.Figure()
for i in drivers:
d = data_2012.where(data_2012['code'] == i).dropna().sort_values(by='round')
fig5.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig6.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig5.show()
fig6['layout']['yaxis']['autorange'] = "reversed"
fig6.show()
data_teams_2012 = races_data.where(races_data['year']==2012).dropna()
data_teams_2012 = data_teams_2012.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2012 = data_teams_2012.merge(constructors_data,on='constructorId').dropna()
data_teams_2012.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2012 = data_teams_2012.sort_values(['round','position'])
constructors = data_teams_2012['name_y'].unique()
data_teams_2012
fig7 = go.Figure()
fig8 = go.Figure()
for i in constructors:
d = data_teams_2012.where(data_teams_2012['name_y'] == i).dropna()
fig7.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig8.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig7.show()
fig8['layout']['yaxis']['autorange'] = "reversed"
fig8.show()
data_2013 = races_data.where(races_data['year']==2013).dropna()
data_2013 = data_2013.merge(diverstanding_data,on='raceId').dropna()
data_2013 = data_2013.merge(drivers_data,on='driverId').dropna()
data_2013.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2013 = data_2013.sort_values(['round','position'])
data_2013
drivers = data_2013['code'].unique()
fig9 = go.Figure()
fig10 = go.Figure()
for i in drivers:
d = data_2013.where(data_2013['code'] == i).dropna().sort_values(by='round')
fig9.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig10.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig9.show()
fig10['layout']['yaxis']['autorange'] = "reversed"
fig10.show()
data_teams_2013 = races_data.where(races_data['year']==2013).dropna()
data_teams_2013 = data_teams_2013.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2013 = data_teams_2013.merge(constructors_data,on='constructorId').dropna()
data_teams_2013.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2013 = data_teams_2013.sort_values(['round','position'])
constructors = data_teams_2013['name_y'].unique()
data_teams_2013
fig11 = go.Figure()
fig12 = go.Figure()
for i in constructors:
d = data_teams_2013.where(data_teams_2013['name_y'] == i).dropna()
fig11.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig12.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig11.show()
fig12['layout']['yaxis']['autorange'] = "reversed"
fig12.show()
data_2014 = races_data.where(races_data['year']==2014).dropna()
data_2014 = data_2014.merge(diverstanding_data,on='raceId').dropna()
data_2014 = data_2014.merge(drivers_data,on='driverId').dropna()
data_2014.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2014 = data_2014.sort_values(['round','position'])
data_2014
drivers = data_2014['code'].unique()
fig13 = go.Figure()
fig14 = go.Figure()
for i in drivers:
d = data_2014.where(data_2014['code'] == i).dropna().sort_values(by='round')
fig13.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig14.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig13.show()
fig14['layout']['yaxis']['autorange'] = "reversed"
fig14.show()
data_teams_2014 = races_data.where(races_data['year']==2014).dropna()
data_teams_2014 = data_teams_2014.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2014 = data_teams_2014.merge(constructors_data,on='constructorId').dropna()
data_teams_2014.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2014 = data_teams_2014.sort_values(['round','position'])
constructors = data_teams_2014['name_y'].unique()
data_teams_2014
fig15 = go.Figure()
fig16 = go.Figure()
for i in constructors:
d = data_teams_2014.where(data_teams_2014['name_y'] == i).dropna()
fig15.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig16.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig15.show()
fig16['layout']['yaxis']['autorange'] = "reversed"
fig16.show()
data_2015 = races_data.where(races_data['year']==2015).dropna()
data_2015 = data_2015.merge(diverstanding_data,on='raceId').dropna()
data_2015 = data_2015.merge(drivers_data,on='driverId').dropna()
data_2015.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2015 = data_2015.sort_values(['round','position'])
data_2015
drivers = data_2015['code'].unique()
fig17 = go.Figure()
fig18 = go.Figure()
for i in drivers:
d = data_2015.where(data_2015['code'] == i).dropna().sort_values(by='round')
fig17.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig18.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig17.show()
fig18['layout']['yaxis']['autorange'] = "reversed"
fig18.show()
data_teams_2015 = races_data.where(races_data['year']==2015).dropna()
data_teams_2015 = data_teams_2015.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2015 = data_teams_2015.merge(constructors_data,on='constructorId').dropna()
data_teams_2015.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2015 = data_teams_2015.sort_values(['round','position'])
constructors = data_teams_2015['name_y'].unique()
data_teams_2015
fig19 = go.Figure()
fig20 = go.Figure()
for i in constructors:
d = data_teams_2015.where(data_teams_2015['name_y'] == i).dropna()
fig19.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig20.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig19.show()
fig20['layout']['yaxis']['autorange'] = "reversed"
fig20.show()
data_2016 = races_data.where(races_data['year']==2016).dropna()
data_2016 = data_2016.merge(diverstanding_data,on='raceId').dropna()
data_2016 = data_2016.merge(drivers_data,on='driverId').dropna()
data_2016.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2016 = data_2016.sort_values(['round','position'])
data_2016
drivers = data_2016['code'].unique()
fig21 = go.Figure()
fig22 = go.Figure()
for i in drivers:
d = data_2016.where(data_2016['code'] == i).dropna().sort_values(by='round')
fig11.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig12.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig11.show()
fig22['layout']['yaxis']['autorange'] = "reversed"
fig22.show()
data_teams_2016 = races_data.where(races_data['year']==2016).dropna()
data_teams_2016 = data_teams_2016.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2016 = data_teams_2016.merge(constructors_data,on='constructorId').dropna()
data_teams_2016.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2016 = data_teams_2016.sort_values(['round','position'])
constructors = data_teams_2016['name_y'].unique()
data_teams_2016
fig23 = go.Figure()
fig24 = go.Figure()
for i in constructors:
d = data_teams_2016.where(data_teams_2016['name_y'] == i).dropna()
fig23.add_trace(go.Scatter(x=d['name_x'],y=d['points'],name=i,mode='lines+markers'))
fig24.add_trace(go.Scatter(x=d['name_x'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig23.show()
fig24['layout']['yaxis']['autorange'] = "reversed"
fig24.show()
data_2017 = races_data.where(races_data['year']==2017).dropna()
data_2017 = data_2017.merge(diverstanding_data,on='raceId').dropna()
data_2017 = data_2017.merge(drivers_data,on='driverId').dropna()
data_2017.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2017 = data_2017.sort_values(['round','position'])
data_2017
drivers = data_2017['code'].unique()
fig13 = go.Figure()
fig14 = go.Figure()
for i in drivers:
d = data_2017.where(data_2017['code'] == i).dropna().sort_values(by='round')
fig13.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig14.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig13.show()
fig14['layout']['yaxis']['autorange'] = "reversed"
fig14.show()
data_2018 = races_data.where(races_data['year']==2018).dropna()
data_2018 = data_2018.merge(diverstanding_data,on='raceId').dropna()
data_2018 = data_2018.merge(drivers_data,on='driverId').dropna()
data_2018.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2018 = data_2018.sort_values(['round','position'])
data_2018
drivers = data_2018['code'].unique()
fig15 = go.Figure()
fig16 = go.Figure()
for i in drivers:
d = data_2018.where(data_2018['code'] == i).dropna().sort_values(by='round')
fig15.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig16.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig15.show()
fig16['layout']['yaxis']['autorange'] = "reversed"
fig16.show()
data_2019 = races_data.where(races_data['year']==2019).dropna()
data_2019 = data_2019.merge(diverstanding_data,on='raceId').dropna()
data_2019 = data_2019.merge(drivers_data,on='driverId').dropna()
data_2019.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2019 = data_2019.sort_values(['round','position'])
data_2019
drivers = data_2019['code'].unique()
fig17 = go.Figure()
fig18 = go.Figure()
for i in drivers:
d = data_2019.where(data_2019['code'] == i).dropna().sort_values(by='round')
fig17.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig18.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig17.show()
fig18['layout']['yaxis']['autorange'] = "reversed"
fig18.show()
data_2020 = races_data.where(races_data['year']==2020).dropna()
data_2020 = data_2020.merge(diverstanding_data,on='raceId').dropna()
data_2020 = data_2020.merge(drivers_data,on='driverId').dropna()
data_2020.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2020 = data_2020.sort_values(['round','position'])
data_2020
drivers = data_2020['code'].unique()
fig19 = go.Figure()
fig20 = go.Figure()
for i in drivers:
d = data_2020.where(data_2020['code'] == i).dropna().sort_values(by='round')
fig19.add_traces(go.Scatter(x=d['name'],y=d['points'],name=i,mode='lines+markers'))
fig20.add_traces(go.Scatter(x=d['name'],y=d['position'],name=i,mode='lines+markers',hovertext=d.points))
fig19.show()
fig20['layout']['yaxis']['autorange'] = "reversed"
fig20.show()